package com.atguigu.gulimall.product;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

/**
 * 1.整合mybatis-plus
 *      1>.导入依赖
 *      2>.配置
 *          1.配置数据源
 *              1.导入数据库的驱动
 *              2.在application.yml中配置数据源
 *          2.配置mybatis-plus
 *              1.使用mapperScan()
 *              2.告诉mybatis-plus，sql映射文件都在哪
 *
 * 2.逻辑删除-----给数据库中的一个字段设置一个flash
 *    1.配置全局的逻辑删除规则 (3.1版本之后可以省略)
 *    2.配置逻辑删除的bean (3.1版本之后可以省略)
 *    3.在实体类的属性上(就是数据库字段)加上逻辑删除注解@TableLogic
 *
 * 3.JSR303
 *    1.给bean添加校验注解
 *    2.开启校验功能  @Valid
 *      效果：校验错误以后会有默认的响应
 *    3.给校验的bean后紧跟一个BindingResult，就可以获取到校验结果
 *    4.分组校验(多场景的复杂校验)
 *      1.给注解上标注什么情况需要进行校验
 *      	@NotBlank(message = "品牌名必须提交",groups = {AddGroup.class,UpdateGroup.class})
 *      2. @Validated({AddGroup.class})
 *      3. 默认没有指定分组的校验注解@NotBlank,在分组校验中【@Validated({AddGroup.class})】不生效，只会在【@Validated】中生效
 *    5.自定义校验
 *      1.自己编写一个自定义校验注解
 *      2.编写自定义校验器
 *      3.关联自定义的校验注解和校验器
 *
 * 4.统一的异常处理
 */
@EnableFeignClients(basePackages = "com.atguigu.gulimall.product.feign")
@EnableDiscoveryClient
@MapperScan("com.atguigu.gulimall.product.dao")
@SpringBootApplication
public class GulimallProductApplication {

    public static void main(String[] args) {
        SpringApplication.run(GulimallProductApplication.class, args);
    }

}
